void CreateListR(LinkList *&L,ElemType a[],int n){
	L=(LinkList *)malloc(sizeof(LinkList));
	LinkList *p=L,*q;
	int i;
	for(i=0;i<n;i++){
		q=(LinkList *)malloc(sizeof(LinkList));
		q->data=a[i];
		p->next=q;
		p=q;
	}
	p->next=NULL;
}
void DispList(LinkList *L){
	LinkList *p;
	for(p=L->next;p!=NULL;p=p->next){
		printf("%c ",p->data);
	}
	printf("\n");
}
void DestroyList(LinkList *&L){
	LinkList *p;
	while(L){
		p=L;
		L=L->next;
		free(p);
	}
}
void sort(LinkList *&L){
	LinkList *p,*q,*pre;
	char min;
	int flag=0;
	for(p=L->next;p!=NULL;p=p->next){
		min=p->data;
		if(p->next==NULL) break;
		for(q=p->next;q!=NULL;q=q->next){
			if(q->data-'0'<min-'0'){
				min=q->data;
				pre=q;
				flag=1;
			}
		}
		if(flag==1){
		pre->data=p->data;
		p->data=min;
		}
		flag=0;
	}
}
void Union(LinkList *ha,LinkList *hb,LinkList *&hc){
	hc=(LinkList *)malloc(sizeof(LinkList));
	LinkList *pre1=ha->next,*pre2=hb->next,*pre=hc,*p;
	while(pre1||pre2){
		if(pre2==NULL||(pre1!=NULL&&pre1->data-'0'<pre2->data-'0')){
			p=(LinkList *)malloc(sizeof(LinkList));
			p->data=pre1->data;
			pre->next=p;
			pre=p;
			pre1=pre1->next;
		}
		else if(pre1==NULL||(pre2!=NULL&&pre1->data-'0'>pre2->data-'0')){
			p=(LinkList *)malloc(sizeof(LinkList));
			p->data=pre2->data;
			pre->next=p;
			pre=p;
			pre2=pre2->next;
		}
		else if(pre1!=NULL&&pre2!=NULL&&pre1->data-'0'==pre2->data-'0'){
			p=(LinkList *)malloc(sizeof(LinkList));
			p->data=pre1->data;
			pre->next=p;
			pre=p;
			pre1=pre1->next;
			pre2=pre2->next;
		}
	}
	pre->next=NULL;
}
void InterSect(LinkList *ha,LinkList *hb,LinkList *&hc){
	LinkList *pre1=ha->next,*pre2=hb->next,*pre=hc,*p,*q=hb->next;
	while(pre1){
		if(pre1->data-'0'==pre2->data-'0'){
			p=(LinkList *)malloc(sizeof(LinkList));
			p->data=pre1->data;
			pre->next=p;
			pre=p;
			pre1=pre1->next;
			pre2=q;
		}
		else if(pre1->data-'0'!=pre2->data-'0'){
			pre2=pre2->next;
		}
		if(pre2==NULL){
			pre2=q;
			pre1=pre1->next;
		}
	}
	pre->next=NULL;
}
void Subs(LinkList *ha,LinkList *hb,LinkList *&hc){
	LinkList *pre1=ha->next,*pre2=hb->next,*pre=hc,*p,*q=hb->next;
	while(pre1){
		if(pre1->data-'0'==pre2->data-'0'){
			pre1=pre1->next;
			pre2=q;
		}
		else if(pre1->data-'0'!=pre2->data-'0'){
			pre2=pre2->next;
		}
		if(pre2==NULL){
			p=(LinkList *)malloc(sizeof(LinkList));
			p->data=pre1->data;
			pre->next=p;
			pre=p;
			pre1=pre1->next;
			pre2=q;
		}
	}
	pre->next=NULL;
}
